Ordeningsoperatoren
OrderBy
De OrderBy queryoperator sorteert de ingevoerde sequentie door de elementen in de invoersequentie met elkaar te vergelijken volgens een specifieke sleutel.
De volgende code toont het sorteren van een eenvoudige invoerreeks van strings. In dit voorbeeld is de sleutel een property die door de lambda expressie x => x.Name of x => x.Leeftijd gespecificeerd wordt.
De volgende code rangschikt de personen eerst op naam en daarna op leeftijd:
Personen[] personen =
{
new Personen { Name = "Jan", Leeftijd = 60 },
new Personen { Name = "An", Leeftijd = 100 },
new Personen { Name = "Peter", Leeftijd = 15 },
new Personen { Name = "Hans", Leeftijd = 11 },
new Personen { Name = "Marijke", Leeftijd = 40 },
new Personen { Name = "Judith", Leeftijd = 20 }
};
IEnumerable<Personen> alfabetischOpNaam =
personen.OrderBy(x => x.Name);
Console.WriteLine("Alfabetische lijst van personen");
foreach (Personen persoon in alfabetischOpNaam)
{
Console.WriteLine(persoon.Name);
}
IEnumerable<Personen> alfabetischOpLeeftijd =
personen.OrderBy(x => x.Leeftijd);
Console.WriteLine("Personen gerangschikt op leeftijd");
foreach (Personen persoon in alfabetischOpLeeftijd)
{
Console.WriteLine(persoon.Name);
}
ThenBy
De ThenBy queryoperator kan één of meerdere keren na een eerste OrderyBy worden toegevoegd. De ThenBy operator voegt extra niveaus toe aan het sorteren. In de volgende code worden de Personen eerst per leeftijd en dan alfabetisch geordend.
Personen[] personen =
{
new Personen { Name = "Jan", Leeftijd = 60 },
new Personen { Name = "An", Leeftijd = 100 },
new Personen { Name = "Peter", Leeftijd = 15 },
new Personen { Name = "Dirk", Leeftijd = 15 },
new Personen { Name = "Hans", Leeftijd = 11 },
new Personen { Name = "Olga", Leeftijd = 11 },
new Personen { Name = "Marijke", Leeftijd = 40 },
new Personen { Name = "Yannick", Leeftijd = 40 },
new Personen { Name = "Judith", Leeftijd = 20 }
};
IEnumerable<Personen> alfabetischOpLeeftijdDanOpNaam =
personen.OrderBy(x => x.Leeftijd).ThenBy(x => x.Name);
Console.WriteLine("Lijst op leeftijd en dan alfabetische op naam:");
foreach (Personen persoon in alfabetischOpLeeftijdDanOpNaam)
{
Console.WriteLine("{0} {1}", persoon.Leeftijd, persoon.Name);
}
OrderByDescending
De OrderByDescending queryoperator werkt op dezelfde manier als de OrderBy operator, met dien verstande dat de resultaten worden geretourneerd in de omgekeerde volgorde,
ThenByDescending
De ThenByDescending queryperator werkt op dezelfde manier als de ThenBy operator, maar retourneert de resultaten in de omgekeerde sorteervolgorde.